﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Security.Principal;
using System.Windows.Forms;

namespace LearnCSharp
{
	class Configuration
	{
		public static void Test()
		{
			////////////////////////////
			// CommandLine : ligne de commande du processus
			Console.WriteLine(Environment.CommandLine);

			////////////////////////////
			// CurrentDirectory : Répertoire de l'executable
			Console.WriteLine( Environment.CurrentDirectory );

			////////////////////////////
			// SystemDirectory : Répertoire du system
			Console.WriteLine(Environment.SystemDirectory);

			////////////////////////////
			// OSVersion : 
			//		Platform :	Système d'exploitation
			//		Version :	Version du système
			Console.WriteLine(Environment.OSVersion.Platform);
			Console.WriteLine(Environment.OSVersion.Version);

			////////////////////////////
			// Version : Version du framwork
			Console.WriteLine(Environment.Version);

			////////////////////////////
			// GetCommandLineArgs : Arguments de la ligne de commande
			foreach (string se in Environment.GetCommandLineArgs())
			{
				Console.WriteLine("Argument ligne de commande: {0}", se);
			}

			////////////////////////////
			// GetEnvironmentVariables & GetEnvironmentVariable: Variable d'environnement
			IDictionary tse = Environment.GetEnvironmentVariables();
			int nNbVar = tse.Keys.Count;
			foreach( System.Collections.DictionaryEntry se in tse )
			{				
				Console.WriteLine( "Variable environnement : {0} : {1}",se.Key, se.Value );
			}
			Console.WriteLine("Variable environnement spécifique TEMP  : {0}", Environment.GetEnvironmentVariable("TEMP"));

			// Autre possibilité
			string[] tabKeys = new string[nNbVar];
			string[] tabVars = new string[nNbVar];

			tse.Keys.CopyTo( tabKeys, 0 );
			tse.Values.CopyTo(tabVars, 0);


			////////////////////////////
			// GetEnvironmentVariables & GetEnvironmentVariable: Variable d'environnement
			foreach (string se in Environment.GetLogicalDrives())
			{
				Console.WriteLine("Disque disponible : {0}", se);
			}

			////////////////////////////
			// WindowsPrincipal WindowsIdentity Name : Nom de l'utilisateur connecté
			WindowsPrincipal wp = new WindowsPrincipal(WindowsIdentity.GetCurrent());
			Console.WriteLine("Nom de l'utilisateur connecté : {0}", wp.Identity.Name);


			////////////////////////////
			// SystemInformation : Information dverse sur le système
			Console.WriteLine("Nom utilisateur : " +SystemInformation.UserName);
			Console.WriteLine("Nom ordinateur : " + System.Windows.Forms.SystemInformation.ComputerName);
			Console.WriteLine("Connecté réseau : "+System.Windows.Forms.SystemInformation.Network);
		}
	}
}
